using ICSharpCode.TextEditor.Document;
using System;
namespace ICSharpCode.TextEditor.Actions
{
	public class GotoMatchingBrace : AbstractEditAction
	{
		public override void Execute(TextArea textArea)
		{
			Highlight highlight = textArea.FindMatchingBracketHighlight();
			if (highlight != null)
			{
				TextLocation textLocation = new TextLocation(highlight.CloseBrace.X + 1, highlight.CloseBrace.Y);
				TextLocation position = new TextLocation(highlight.OpenBrace.X + 1, highlight.OpenBrace.Y);
				if (textLocation == textArea.Caret.Position)
				{
					if (textArea.Document.TextEditorProperties.BracketMatchingStyle == BracketMatchingStyle.After)
					{
						textArea.Caret.Position = position;
					}
					else
					{
						textArea.Caret.Position = new TextLocation(position.X - 1, position.Y);
					}
				}
				else
				{
					if (textArea.Document.TextEditorProperties.BracketMatchingStyle == BracketMatchingStyle.After)
					{
						textArea.Caret.Position = textLocation;
					}
					else
					{
						textArea.Caret.Position = new TextLocation(textLocation.X - 1, textLocation.Y);
					}
				}
				textArea.SetDesiredColumn();
			}
		}
	}
}
